/*
给定 N 个闭区间 [ai,bi]，请你将这些区间分成若干组，使得每组内部的区间两两之间（包括端点）没有交集，并使得组数尽可能小。

输出最小组数。

输入格式
第一行包含整数 N，表示区间数。

接下来 N 行，每行包含两个整数 ai,bi，表示一个区间的两个端点。

输出格式
输出一个整数，表示最小组数。

数据范围
1≤N≤105,
−109≤ai≤bi≤109
输入样例：
3
-1 1
2 4
3 5
输出样例：
2
*/
#include <iostream>
#include <algorithm>
#include <queue>

using namespace std;
const int N = 1e5 + 10;
int n;
typedef pair<int, int> PII;
PII range[N];
bool my_sort(PII a, PII b)
{
    return a.first < b.first;
}
int main(int argc, char const *argv[])
{
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> range[i].first >> range[i].second;
    sort(range, range + n, my_sort);
    priority_queue<int, vector<int>, greater<int>> heap;

    for (int i = 0; i < n; i++)
    {
        auto temp = range[i];
        if (heap.empty() || heap.top() >= temp.first)
            heap.push(temp.second);
        else
        {
            heap.pop();
            heap.push(temp.second);
        }
    }
    cout << heap.size() << endl;
    return 0;
}
